#ifndef __WEBPAGE_HPP__
#define __WEBPAGE_HPP__

#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <set>
#include "Configuration.hpp"
#include "WordSegmentation.hpp"

class WebPage{
public:
    WebPage(std::string& doc, Configuration& conf, WordSegmentation& jieba);
    int getDocId();
    std::string getDoc();
    std::map<std::string, int>& getWordsMap();

private:
    const static int TPOK_NUMBER =20;       
    std::string _doc;                       // 整篇文档，包含xml在内
    int _docId;                             // 文档id
    std::string _docTitle;                  // 文档标题
    std::string _docUrl;                    // 文档URL
    std::string _docContent;                // 文档内容
    std::string _docSummary;                // 文档摘要，需自动生成，不是固定的
    std::vector<std::string> _topWords;     // 词频最高的前20个词
    std::map<std::string, int> _wordsMap;   // 保存每篇文档的所有词语和词频， 不包括停用词

    void processDoc(const std::string& doc, Configuration& config, WordSegmentation& jieba);
    void calcTopK(std::vector<std::string>& wordsVec, int k, std::set<std::string>& stopWordList);
    
    friend bool operator==(const WebPage& lhs, const WebPage& rhs);
    friend bool operator< (const WebPage& lhs, const WebPage& rhs);
};

#endif